let layerIndex;

// 弹出学生新增/更新对话框
function showStudentDlg(id) {
    let title = "新增学生";
    if (id) {
        // 编辑模式
        title = "编辑学生";
        $("#formId").css("display", "block");

        // 使用 AJAX 请求获取学生数据
        $.ajax({
            url: "/api/student/" + id,
            method: "GET"
        }).done(function(result) {
            console.log("学生数据:", result.data);

            // 填充表单数据
            $('#studForm [name="id"]').val(result.data.id);
            $('#studForm [name="sno"]').val(result.data.sno);
            $('#studForm [name="name"]').val(result.data.name);
            $('#studForm [name="age"]').val(result.data.age);

            // 处理性别单选按钮
            if (result.data.sex === 1) {
                $('#studForm [name="sex"][value="1"]').prop('checked', true);
            } else if (result.data.sex === 2) {
                $('#studForm [name="sex"][value="2"]').prop('checked', true);
            }

            // 重新渲染表单
            layui.form.render();
        });
    } else {
        // 新增模式
        $("#studForm")[0].reset();
        $("#formId").css("display", "none");
    }

    // 显示对话框
    layerIndex = layer.open({
        type: 1,
        title: title,
        area: ['520px', 'auto'],
        content: $('#studForm') // 捕获层
    });
}

function getSearchCondition() {
    let formData = {};
    // 遍历每个输入元素，将其值存储到 formData 对象中
    $('#queryForm').find('input, select').each(function() {
        let name = $(this).attr('name');
        let value = $(this).val();

        if (name && value) {
            formData[name] = value;
        }
    });
    return formData;
}

layui.use(['form', 'table'], function() {
    const form = layui.form;
    const table = layui.table;

    // 表单提交事件
    form.on('submit(stud-dlg)', function(data) {
        event.preventDefault(); // 阻止表单默认提交
        commitStuDlg(); // 调用提交对话框逻辑
    });

    // 表格初始化
    let student = getSearchCondition();

    // 创建渲染实例
    table.render({
        elem: '#tbStudent',
        url: '/api/student/getbypage',
        method: "POST",
        contentType: 'application/json',
        where: { "data": student },
        page: true,
        cols: [[
            { type: 'checkbox', fixed: 'left' },
            { field: 'id', fixed: 'left', width: 80, title: 'id', sort: true },
            { field: 'name', title: '姓名' },
            {
                field: 'sno',
                title: '学号',
                width: 150,
            },
            {
                field: 'sex', width: 80, title: '性别', sort: true,
                templet: d => d.sex === 1 ? '男' : (d.sex === 2 ? '女' : '未知'),
            },
            { field: 'age', width: 100, title: '年龄', sort: true },
            { field: 'right', title: '操作', width: 134, minWidth: 125, templet: '#editTemplate' }
        ]],
        done: function(res) {
            // 表格渲染完成后的回调
        }
    });

    // 表格工具栏事件
    table.on('tool(tbStudent)', function(obj) {
        const data = obj.data;
        if (obj.event === 'edit') {
            // 调用显示编辑对话框的函数
            showStudentDlg(data.id);
        }
    });
});

function deleteConfirm() {
    const table = layui.table;
    const checkStatus = table.checkStatus('tbStudent');
    const ids = checkStatus.data.map(item => item.id);

    if (ids.length === 0) {
        alert("请至少选择一项");
        return;
    }

    layer.confirm('你真的要删除吗？一旦删除，不可恢复！', { icon: 3 }, function() {
        $.ajax({
            url: "/api/student/delete/batch",
            method: "DELETE",
            contentType: "application/json",
            data: JSON.stringify(ids)
        }).done(() => {
            // 刷新表格
            table.reloadData("tbStudent");
            layer.closeAll();
        });
    });
}

function search() {
    let student = getSearchCondition();
    const table = layui.table;
    table.reloadData("tbStudent", {
        where: { data: student }
    });
    console.log("where condition:" + JSON.stringify(student));
}

function commitStuDlg() {
    let id = $("#id").val();
    // 将表单数据发送到服务器的 insert 中，把提交按钮变灰
    let formData = $("#studForm").serialize();

    if (id != null && id != "") {
        // 更新学生
        $.ajax({
            url: "/api/student/update",
            method: "PUT",
            data: formData
        }).done(result => {
            console.log(result);
            if (result.code === 0) {
                // 刷新表格
                const table = layui.table;
                table.reloadData("tbStudent");

                // 关闭弹窗
                layer.close(layerIndex);
            }
        });
    } else {
        $.ajax({
            url: "/api/student/add",
            method: "POST",
            data: formData
        }).done(result => {
            console.log(result);
            if (result.code === 0) {
                // 刷新表格
                const table = layui.table;
                table.reloadData("tbStudent");

                // 关闭弹窗
                layer.close(layerIndex);
            }
        });
    }

    $("#btnOK").prop("disabled", true).addClass("layui-btn-disabled"); // 禁用按钮
}


function deleteById(id) {

    //删除
    layer.confirm('你真的要删除吗？一旦删除,不可恢复!', {icon: 3}, function () {

            $.ajax({
                url: "/api/student/delete/" + id,
                method: "DELETE"

            }).done(result => {

                loadStudentList();
            })
            layer.closeAll();//关闭所有层（包括确认框）


        }, function () {

        }
    )}


